package com.weiqiao.mall.repository;

import com.weiqiao.base.dao.IBaseMongoDao;
import org.bson.Document;
import org.bson.conversions.Bson;

import java.util.List;

/**
 * @author chenyudong
 * @date 2019/5/8
 * @desc
 */
public interface IMarketActiveRepository extends IBaseMongoDao {

    /**
     * 根据条件查询所有的活动
     *
     * @param filter    filter
     * @param companyId companyId
     * @return list
     */
    List<String> findMarketActiveList(Bson filter, int companyId);

    /**
     * 分页条件获取活动
     *
     * @param filter
     * @param sort
     * @param limit
     * @param companyId
     * @return
     */
    List<String> findMarketActiveList(Bson filter, Bson sort, int limit, int companyId);

    /**
     * 添加限时活动
     *
     * @param json       实体json
     * @param company_id 公司id
     * @return bool
     */
    boolean addMarketActive(String json, int company_id);

    /**
     * 添加活动记录
     *
     * @param json       记录实体
     * @param company_id 公司id
     * @return bool
     */
    boolean addMarketActiveLog(String json, int company_id);

    /**
     * 查找单个个活动
     *
     * @param bson      查询条件
     * @param companyId 公司id
     * @return str
     */
    String findOneMarketActive(Bson bson, int companyId);

    /**
     * 查询数量
     *
     * @param bson bson
     * @return int
     */
    int countByBson(Bson bson, int company_id);

    /**
     * 分页获取活动列表
     *
     * @param company_id 公司id
     * @param bson       查询条件
     * @param sort       排序
     * @param skip       页数
     * @param pageSize   行数
     * @return list
     */
    List<String> getFlashsaleListByFilterSortSkipLimt(int company_id, Bson bson, Bson sort, int skip, int pageSize);

    /**
     * 分页获取拼团活动列表
     *
     * @param company_id
     * @param bson
     * @param sort
     * @param skip
     * @param pageSize
     * @return list
     */
    List<String> getAssemblyListByFilterSortSkipLimt(int company_id, Bson bson, Bson sort, int skip, int pageSize);

    /**
     * 根据条件查询所有的活动订单记录
     *
     * @param filter    filter
     * @param companyId companyId
     * @return list
     */
    List<String> findMarketActiveLogList(Bson filter, int companyId);

    /**
     * 修改单个限时活动实体
     *
     * @param filter     查询条件
     * @param doc        修改内容
     * @param company_id 公司id
     * @return bool
     */
    boolean updateOneMarketActive(Bson filter, Document doc, int company_id);

    /**
     * 修改活动订单记录
     *
     * @param filter     filter
     * @param doc        doc
     * @param company_id company_id
     * @return bool
     */
    boolean updateOneMarketActiveLog(Bson filter, Document doc, int company_id);
}
